home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dr. Windows 3
/
dr win3.zip
/
dr win3
/
VISUALBA
/
BLTQ12.ZIP
/
IDEMO.BAS
< prev
next >
Wrap
BASIC Source File
|
1993-01-04
|
51KB
|
1,816 lines
DECLARE SUB DoHighlight (row%)
DECLARE SUB DisplayRecord (RecNo&, row%)
DECLARE SUB ShowDBFStruc (ask4%, ask$, ret$)
DECLARE SUB ShowFieldNames (StartField%)
DECLARE SUB ShowNewFields (newfield%)
DECLARE SUB ShowMainScreen (infile$)
DECLARE SUB ShowStartCL ()
DECLARE SUB DoGoHome ()
DECLARE SUB DoGoEnd ()
DECLARE SUB DoHorzScroll (dir%)
DECLARE SUB DoHorzSlide (kbkey%)
DECLARE SUB DoHorzSkip (dir%)
DECLARE SUB DoVertScroll (dir%)
DECLARE SUB DoVertSlide (kbkey%)
DECLARE SUB AdjustHorzSlide (FirstField%)
DECLARE SUB AdjustVertSlide (RecNo&)
DECLARE SUB DoInitHots ()
DECLARE FUNCTION DoInit% ()
DECLARE FUNCTION WaitForKey% ()
DECLARE FUNCTION GetRecord% (RecNo&)
DECLARE SUB WinClr (row%, col%, rows%, cols%, char%, fg%, bg%)
DECLARE SUB WinGet (row%, col%, rows%, cols%, ID%)
DECLARE SUB WinPrt (txt$, row%, col%, MaxChars%, FirstChar%, fg%, bg%)
DECLARE SUB WinPut (row%, col%, rows%, cols%, ID%)
DECLARE SUB WinSetMode (page%, row%, col%, cstart%, cend%, vmode%)
DECLARE SUB WinScroll (row%, col%, rows%, cols%, dir%, fg%, bg%)
DECLARE SUB WinShift (row%, col%, rows%, cols%, dir%, fg%, bg%)
DECLARE SUB MouseFunc (Func%, IM AS ANY, OM AS ANY)
DECLARE SUB MouseTurn (onoff%)
DECLARE FUNCTION SelectEvent% ()
DECLARE FUNCTION InKeyPick% (waitfor%)
DECLARE FUNCTION InMousePick% ()
DECLARE SUB InKeyResponse (row%, col%, maxlen%, retstr$)
REM $INCLUDE: 'BULLET.BI'
REM $INCLUDE: 'ZWINDO.BI'
DECLARE SUB INTERRUPTX (intnum%, ireg AS ANY, oreg AS ANY)
DEFINT A-Z
'interactive demo
'31-May-92 chh
'------------------
'instructions for QuickBASIC 4.5
'C>bc idemo /o;
'C>link idemo+zwindo+intrpt2,idemo.exe,nul,bullet;
'C>link /qu bullet.lib+zwindo+intrpt2,idemo.qlb,nul,bqlb45;
'-----------------
'instructions for PDS BASIC 7.1
'C>bc idemo /o/ot;
'C>link /noe/packc/far idemo+zwindo+intrpt2+smallerr+tscnionr,
' idemo.exe,nul,bullet;
'C>link /qu bullet.lib+zwindo+intrpt2,idemo.qlb,nul,qbxqlb;
'----------------------------------------------------------------------------
'notes: INTRPT2.OBJ and ZWINDO.OBJ are provided as-is and are not a supported
' part of the BULLET package. INTRPT2.OBJ is a replacement module for
' the somewhat buggy INTERRUPT(X) code provided in the QB.LIB/QBX.LIB
' files of QuickBASIC/BASIC 7.1. ZWINDO.OBJ is a cut-down direct-access
' screen/video manager, included here only so that you can recompile
' the IDEMO.BAS program.
' This demo is an abbreviated full-interactive program. There is still
' a lot that can (and needs to) be done. What you might want to add is
' select/create indexes, set filters, oh, lots of things. In an effort
' to keep the IDEMO.EXE included with BULLET package small the guts of
' the program have not been done.
' To use the program just C>idemo filename.dbf. You can use the provided
' .DBF file or any .DBF file. To pan fields if the record is longer than
' the display screen, use the left/right arrows. A mouse can be used on
' the scroll bars/arrows, too. Esc exits to DOS. To browse the DBF use
' the up/down arrows, page up/dn, home/end, or the mouse buttons along
' the right AND bottom.
' For more direct source example see the BB_*.BAS QB source files.
'----------
'event data
TYPE ButtonInfoTYPE
x0 AS INTEGER 'col
y0 AS INTEGER 'row
xs AS INTEGER 'cols
ys AS INTEGER 'rows
kv AS INTEGER 'key value
END TYPE
TYPE RegTypeX 'interface structure to INTERRUPTX
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
BP AS INTEGER
si AS INTEGER
DI AS INTEGER
flags AS INTEGER
ds AS INTEGER
es AS INTEGER
END TYPE
TYPE MouseTYPE 'interface structure to MOUSEFUNC
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
END TYPE
CONST MAXBUTTONS = 7
DIM SHARED ButtonSpots(1 TO MAXBUTTONS) AS ButtonInfoTYPE
DIM SHARED IM AS MouseTYPE 'mouse INT33 ins
DIM SHARED OM AS MouseTYPE 'outs
DIM SHARED xreg AS RegTypeX 'regs for interruptx call
DIM SHARED MouseSaved AS INTEGER'=0 then mouse state not saved
DIM SHARED IsMouse AS INTEGER '=0 then mouse driver not available
'-----------
'window data
CONST MAXWINSAVES = 2 '0-based, window 0 reserved
DIM SHARED WSP AS WinSavePack
DIM SHARED WFP AS WinFillPack
DIM SHARED WPP AS WinPrintPack
DIM SHARED WCP AS WinCursorPack
DIM SHARED WCPorg AS WinCursorPack
DIM SHARED WinBuff(0 TO (MAXWINSAVES + 1) * 2000) AS INTEGER
DIM SHARED atxt$(1 TO 11)
'-----------
'bullet data
CONST MAXRECLEN = 4000 'limit DBF recs to 4000 bytes (o)
TYPE StrucTYPE 'type used for DBF struc display
FieldName AS STRING * 11
FieldType AS STRING * 1
FieldLen AS INTEGER
FieldDC AS INTEGER
END TYPE
DIM SHARED DFP AS DOSFilePack
DIM SHARED MP AS MemoryPack
DIM SHARED IP AS InitPack
DIM SHARED EP AS ExitPack
DIM SHARED BP AS BreakPack
DIM SHARED RP AS RemotePack
DIM SHARED CDP AS CreateDataPack
DIM SHARED CKP AS CreateKeyPack
DIM SHARED SDP AS StatDataPack
DIM SHARED SKP AS StatKeyPack
DIM SHARED DP AS DescriptorPack
DIM SHARED OP AS OpenPack
DIM SHARED AP AS AccessPack
DIM SHARED StrucDBF(1 TO 255) AS StrucTYPE
'REDIM SHARED StrucDBF(1 TO 1) AS StrucTYPE 'will be resizing so make dynamic
'--field descriptions for program
DIM SHARED TheRecord AS STRING * 4000 'any type DBF data record
'------------
'program data
CONST SSROW = 9 - 1 'scroll screen row start
CONST SSROWS = 10 'number of rows in scroll screen
TYPE FieldDisplayInfoTYPE
FirstField AS INTEGER 'start field being displayed
FieldsDisplayed AS INTEGER 'number of fields being displayed
END TYPE
TYPE RecordDisplayInfoTYPE
CurrRecord AS LONG 'highlighted recno (for ScrollBar loc)
TopRecord AS LONG 'first scroll screen rec's number
BotRecord AS LONG 'last scroll screen rec's number
TopKey AS STRING * 64 'first scroll screen rec's key
BotKey AS STRING * 64 'last scroll screen rec's key
END TYPE
TYPE PosInfoTYPE
VertSlide AS INTEGER 'current slide pos (0-7)
HorzSlide AS INTEGER 'current slide pos (0-74)
TotalRows AS LONG 'row or records in file
TotalCols AS INTEGER 'cols or characters in record
ScreenRow AS INTEGER 'current screen row (1-10)
END TYPE
DIM SHARED FDI AS FieldDisplayInfoTYPE
DIM SHARED RDI AS RecordDisplayInfoTYPE
DIM SHARED PI AS PosInfoTYPE
DIM SHARED TmpStr AS STRING * 256 'any type fixed-len string
DIM SHARED ZSTR AS STRING * 1 'zero-terminator
DIM SHARED LockFlag AS INTEGER '=0 then do not use locks
DIM SHARED CurrIDX AS INTEGER 'current index in use (0,1-32)
DIM SHARED ISFG AS INTEGER 'info screen colors
DIM SHARED ISBG AS INTEGER
DIM SHARED ISFGB AS INTEGER
DIM SHARED HSFG AS INTEGER 'field name header colors
DIM SHARED HSBG AS INTEGER
DIM SHARED HSFGB AS INTEGER
DIM SHARED SSFG AS INTEGER 'scroll screen colors
DIM SHARED SSBG AS INTEGER
DIM SHARED SSFGB AS INTEGER
ZSTR = CHR$(0)
LockFlag = 0
CurrIDX = 0
ISFG = 7: ISBG = 0: ISFGB = 15 'info screen colors
HSFG = 15: HSBG = 0: HSFGB = 15 'field name header colors
SSFG = 2: SSBG = 0: SSFGB = 10 'scroll screen colors
'-----
'go4it
stat = DoInit
WinSetMode 0, 0, 0, -1, -1, 3 'page,row,col,cstart,cend,vmode
WinClr 0, 0, 25, 80, 32, ISFG, ISBG
WinClr SSROW, 0, SSROWS + 1, 80, 32, SSFG, SSBG
infile$ = COMMAND$
IF LEN(infile$) = 0 THEN
ShowStartCL
stat = -1
END IF
IF stat = 0 THEN
'open DBF file
TmpStr = infile$ + ZSTR
OP.Func = OpenDXB
OP.FilenamePtrOff = VARPTR(TmpStr)
OP.FilenamePtrSeg = VARSEG(TmpStr)
OP.ASmode = ReadWrite + DenyNone
stat = BULLET(OP)
IF stat = 0 T